/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package byblos.apresentacao.galeria;

import byblos.apresentacao.idioma.InterceptadorIdioma;
import byblos.apresentacao.usuario.InterceptadorLogin;
import byblos.negocio.NegocioExcecao;
import byblos.negocio.galeria.FotoGaleria;
import byblos.negocio.galeria.Galeria;
import byblos.persistencia.DAO;
import byblos.util.MultipartRequestInterceptor;
import byblos.util.StringUtil;
import byblos.util.Util;
import javax.servlet.http.HttpServletRequest;
import org.vraptor.annotations.Component;
import org.vraptor.annotations.In;
import org.vraptor.annotations.InterceptedBy;
import org.vraptor.annotations.Logic;
import org.vraptor.annotations.Out;
import org.vraptor.annotations.Parameter;
import org.vraptor.interceptor.UploadedFileInformation;

/**
 *
 * @author marano
 */
@Component
@InterceptedBy(value = {InterceptadorIdioma.class, InterceptadorLogin.class, MultipartRequestInterceptor.class})
public class FotoGaleriaComponent {

    @In
    private HttpServletRequest request;
    @Out
    private FotoGaleria foto;
    @Parameter
    private Integer fotoId;
    @Parameter
    private String descricaoPortugues;
    @Parameter
    private String descricaoIngles;
    @Parameter
    private String descricaoEspanhol;
    @Parameter
    private String descricaoFrances;
    @Parameter
    private String descricaoAlemao;
    @Parameter
    private String descricao;
    @In(required = false)
    private UploadedFileInformation arquivoAltaResolucao;
    @Out
    private String mensagemSucesso;
    @Out
    private String mensagemErro;

    @Logic(parameters = "id")
    public String remover(int id) {
        FotoGaleria fotoGaleria = new DAO().localizar(FotoGaleria.class, id);
        if (fotoGaleria == null) {
            throw new NegocioExcecao("Não foi possível localizar a foto " + id);
        }
        Galeria galeria = fotoGaleria.getGaleria();
        galeria.removerFoto(fotoGaleria);
        new DAO().salvar(galeria);
        new DAO().remover(fotoGaleria);
//        new File(fotoGaleria.getCaminho()).delete();
        request.getParameterMap().put("id", "" + galeria.getIdPai());
        mensagemSucesso = "Foto removida com sucesso!";
        return galeria.getClass().getSimpleName();
    }

    @Logic(parameters = "id")
    public void removerAltaResolucao(int id) {
        FotoGaleria fotoGaleria = new DAO().localizar(FotoGaleria.class, id);
        if (fotoGaleria == null) {
            throw new NegocioExcecao("Não foi possível localizar a foto " + id);
        }
        fotoGaleria.apagarAltaResolucao();
        new DAO().salvar(fotoGaleria);
//        new File(fotoGaleria.getCaminho()).delete();
        mensagemSucesso = "Arquivo de alta resolução removido com sucesso!";
        request.getParameterMap().put("id", "" + fotoGaleria.getGaleria().getIdPai());
    }

    @Logic(parameters = {"id"})
    public void editar(int id) {
        foto = new DAO().localizar(FotoGaleria.class, id);
        if (foto == null) {
            throw new NegocioExcecao("Não foi possível localizar a foto " + id);
        }
    }

    public String salvar() {
        boolean adicionouImagem = false;
        FotoGaleria fotoGaleria = new DAO().localizar(FotoGaleria.class, fotoId);
        descricao = StringUtil.substituir(descricao, "\n", "");
        descricao = StringUtil.substituir(descricao, "\r", "");
        fotoGaleria.setDescricao(descricao);
        descricaoAlemao = StringUtil.substituir(descricaoAlemao, "\n", "");
        descricaoAlemao = StringUtil.substituir(descricaoAlemao, "\r", "");
        fotoGaleria.setDescricaoAlemao(descricaoAlemao);
        descricaoEspanhol = StringUtil.substituir(descricaoEspanhol, "\n", "");
        descricaoEspanhol = StringUtil.substituir(descricaoEspanhol, "\r", "");
        fotoGaleria.setDescricaoEspanhol(descricaoEspanhol);
        descricaoFrances = StringUtil.substituir(descricaoFrances, "\n", "");
        descricaoFrances = StringUtil.substituir(descricaoFrances, "\r", "");
        fotoGaleria.setDescricaoFrances(descricaoFrances);
        descricaoIngles = StringUtil.substituir(descricaoIngles, "\n", "");
        descricaoIngles = StringUtil.substituir(descricaoIngles, "\r", "");
        fotoGaleria.setDescricaoIngles(descricaoIngles);
        descricaoPortugues = StringUtil.substituir(descricaoPortugues, "\n", "");
        descricaoPortugues = StringUtil.substituir(descricaoPortugues, "\r", "");
        fotoGaleria.setDescricaoPortugues(descricaoPortugues);
        Galeria galeria = fotoGaleria.getGaleria();

//        new File(fotoGaleria.getCaminho()).delete();
//        request.getParameterMap().put("id", "" + galeria.getIdPai());
//        return galeria.getClass().getSimpleName();

        System.out.println("fileFotoAltaResolucao ==============================" + arquivoAltaResolucao);
        if (arquivoAltaResolucao != null) {
            String caminhoRelativoFoto = Util.salvarArquivo(request, "galeria/altaresolucao", arquivoAltaResolucao, false, null);
            System.out.println("caminho da foto alta resolucao ==== " + caminhoRelativoFoto);
            fotoGaleria.setCaminhoAltaResolucao(caminhoRelativoFoto);
            adicionouImagem = true;
        }
        new DAO().salvar(fotoGaleria);
        if (adicionouImagem) {
            request.getParameterMap().put("id", "" + fotoGaleria.getId());
            mensagemSucesso = "Arquivo de Alta Resolução slava com sucesso!";
            return "editar";
        } else {
            request.getParameterMap().put("id", "" + galeria.getIdPai());
            mensagemSucesso = "Foto salva com sucesso!";
            return galeria.getClass().getSimpleName();
        }
    }
}
